const dbDriverMap = {
    // MySQL 数据库
    '1': { dbDriver: 'com.mysql.jdbc.Driver' },
    //MySQL5.7+ 数据库
    '4': { dbDriver: 'com.mysql.cj.jdbc.Driver' },
    // Oracle
    '2': { dbDriver: 'oracle.jdbc.OracleDriver' },
    // SQLServer 数据库
    '3': { dbDriver: 'com.microsoft.sqlserver.jdbc.SQLServerDriver' },
    // marialDB 数据库
    '5': { dbDriver: 'org.mariadb.jdbc.Driver' },
    // postgresql 数据库
    '6': { dbDriver: 'org.postgresql.Driver' },
    // 达梦 数据库
    '7': { dbDriver: 'dm.jdbc.driver.DmDriver' },
    // 人大金仓 数据库
    '8': { dbDriver: 'com.kingbase8.Driver' },
    // 神通 数据库
    '9': { dbDriver: 'com.oscar.Driver' },
    // SQLite 数据库
    '10': { dbDriver: 'org.sqlite.JDBC' },
    // DB2 数据库
    '11': { dbDriver: 'com.ibm.db2.jcc.DB2Driver' },
    // Hsqldb 数据库
    '12': { dbDriver: 'org.hsqldb.jdbc.JDBCDriver' },
    // Derby 数据库
    '13': { dbDriver: 'org.apache.derby.jdbc.ClientDriver' },
    // H2 数据库
    '14': { dbDriver: 'org.h2.Driver' },
    // 其他数据库
    '15': { dbDriver: '' },
};
const dbUrlMap = {
    // MySQL 数据库
    '1': { dbUrl: 'jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false' },
    //MySQL5.7+ 数据库
    '4': {
        dbUrl: 'jdbc:mysql://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai',
    },
    // Oracle
    '2': { dbUrl: 'jdbc:oracle:thin:@127.0.0.1:1521:ORCL' },
    // SQLServer 数据库
    '3': { dbUrl: 'jdbc:sqlserver://127.0.0.1:1433;SelectMethod=cursor;DatabaseName=jeecgboot' },
    // Mariadb 数据库
    '5': { dbUrl: 'jdbc:mariadb://127.0.0.1:3306/jeecg-boot?characterEncoding=UTF-8&useSSL=false' },
    // Postgresql 数据库
    '6': { dbUrl: 'jdbc:postgresql://127.0.0.1:5432/jeecg-boot' },
    // 达梦 数据库
    '7': { dbUrl: 'jdbc:dm://127.0.0.1:5236/?jeecg-boot&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8' },
    // 人大金仓 数据库
    '8': { dbUrl: 'jdbc:kingbase8://127.0.0.1:54321/jeecg-boot' },
    // 神通 数据库
    '9': { dbUrl: 'jdbc:oscar://192.168.1.125:2003/jeecg-boot' },
    // SQLite 数据库
    '10': { dbUrl: 'jdbc:sqlite://opt/test.db' },
    // DB2 数据库
    '11': { dbUrl: 'jdbc:db2://127.0.0.1:50000/jeecg-boot' },
    // Hsqldb 数据库
    '12': { dbUrl: 'jdbc:hsqldb:hsql://127.0.0.1/jeecg-boot' },
    // Derby 数据库
    '13': { dbUrl: 'jdbc:derby://127.0.0.1:1527/jeecg-boot' },
    // H2 数据库
    '14': { dbUrl: 'jdbc:h2:tcp://127.0.0.1:8082/jeecg-boot' },
    // 其他数据库
    '15': { dbUrl: '' },
};
export const columns = [
    {
        title: '数据源名称',
        dataIndex: 'name',
        width: 200,
        align: 'left',
    },
    {
        title: '数据库类型',
        dataIndex: 'dbType_dictText',
        width: 200,
    },
    {
        title: '驱动类',
        dataIndex: 'dbDriver',
        width: 200,
    },
    {
        title: '数据源地址',
        dataIndex: 'dbUrl',
    },
    {
        title: '用户名',
        dataIndex: 'dbUsername',
        width: 200,
    },
];
export const searchFormSchema = [
    {
        field: 'name',
        label: '数据源名称',
        component: 'Input',
        colProps: { span: 8 },
    },
    {
        field: 'dbType',
        label: '数据库类型',
        component: 'JDictSelectTag',
        colProps: { span: 8 },
        componentProps: () => {
            return {
                dictCode: 'database_type',
            };
        },
    },
];
export const formSchema = [
    {
        field: 'id',
        label: 'id',
        component: 'Input',
        show: false,
    },
    {
        field: 'code',
        label: '数据源编码',
        component: 'Input',
        required: true,
        dynamicDisabled: ({ values }) => {
            return !!values.id;
        },
    },
    {
        field: 'name',
        label: '数据源名称',
        component: 'Input',
        required: true,
    },
    {
        field: 'dbType',
        label: '数据库类型',
        component: 'JDictSelectTag',
        required: true,
        componentProps: ({ formModel }) => {
            return {
                dictCode: 'database_type',
                onChange: (e) => {
                    formModel = Object.assign(formModel, dbDriverMap[e], dbUrlMap[e]);
                },
            };
        },
    },
    {
        field: 'dbDriver',
        label: '驱动类',
        required: true,
        component: 'Input',
    },
    {
        field: 'dbUrl',
        label: '数据源地址',
        required: true,
        component: 'Input',
    },
    {
        field: 'dbUsername',
        label: '用户名',
        required: true,
        component: 'Input',
    },
    {
        field: 'dbPassword',
        label: '密码',
        required: true,
        component: 'InputPassword',
        slot: 'pwd',
    },
    {
        field: 'remark',
        label: '备注',
        component: 'InputTextArea',
    },
];
